package edu.cebanc.spring.controller;

import java.util.ArrayList;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import edu.cebanc.spring.bean.Libro;

@Controller
@RequestMapping(value="/libros")
public class LibrosSpringController {
	
	ArrayList<Libro> libros = new ArrayList<Libro>();

	@RequestMapping(method=RequestMethod.GET)
	public String getMainView(Model model){
		
		model.addAttribute("libros", libros);
		System.out.println(libros.toString());
		return "librosMain";
	}
	
	@RequestMapping(value="newLibro", method=RequestMethod.GET)
	public String getFormView(Model model){
		
		Libro libro = new Libro();
		model.addAttribute("libro", libro);
		
		return "librosForm";
	}
	
	@RequestMapping(value="{id}", method=RequestMethod.GET)
	public String getView(@PathVariable String id, Model model){
		
		for(int i = 0; i < libros.size(); i++){
			if(libros.get(i).getIsbn().equals(id)){
				model.addAttribute("libro", libros.get(i));
			}
		}
		return "librosView";
	}
	
	//Función para añadir y editar libros
	@RequestMapping(method=RequestMethod.POST)
	public String addLibro(@Valid Libro libro, BindingResult result){
		
		if(result.hasErrors()){
			return "redirect:/libros/newLibro";
		}
		//Primero comprabar que exite y eliminar para actualizar
		
		for(int i = 0; i < this.libros.size(); i++){
			if(this.libros.get(i).getIsbn().equals(libro.getIsbn())){
				this.libros.remove(i);
			}
		}
		//Luego añadir 
		this.libros.add(libro);
		return "redirect:/libros/";
	}
	
	@RequestMapping(value="editLibro/{id}", method=RequestMethod.GET)
	public String editLibro(@PathVariable String id, Model model){
		
		for(int i = 0; i < libros.size(); i++){
			if(libros.get(i).getIsbn().equals(id)){
				model.addAttribute("libro", libros.get(i));
			}
		}
		
		return "librosForm";
	}
	
	@RequestMapping(value="deleteLibro/{id}", method=RequestMethod.GET)
	public String deleteLibro(@PathVariable String id){
		
		for(int i = 0; i < libros.size(); i++){
			if(libros.get(i).getIsbn().equals(id)){
				libros.remove(i);
			}
		}
		return "redirect:/libros/";
	}
}
